demo/glarea: Check errors on GtkGLArea
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 25 Mar 2015 15:20:36 +0000 (15:20 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 25 Mar 2015 15:20:36 +0000 (15:20 +0000)
We should not call OpenGL API if GtkGLArea is in an error state.

https://bugzilla.gnome.org/show_bug.cgi?id=746746

demos/gtk-demo/glarea.c

index ed87ef0e4c255d01e99c8998ffc8d859c2f8bce6..613c2c99a9254c8232e2ee5480b91f5d39c75575 100644 (file)
@@ -220,6 +220,9 @@ realize (GtkWidget *widget)
 {
   gtk_gl_area_make_current (GTK_GL_AREA (widget));
 
+  if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
+    return;
+
   init_buffers (&position_buffer, NULL);
   init_shaders (&program, &mvp_location);
 }
@@ -230,6 +233,9 @@ unrealize (GtkWidget *widget)
 {
   gtk_gl_area_make_current (GTK_GL_AREA (widget));
 
+  if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
+    return;
+
   glDeleteBuffers (1, &position_buffer);
   glDeleteProgram (program);
 }
@@ -271,6 +277,9 @@ static gboolean
 render (GtkGLArea    *area,
         GdkGLContext *context)
 {
+  if (gtk_gl_area_get_error (area) != NULL)
+    return FALSE;
+
   /* Clear the viewport */
   glClearColor (0.5, 0.5, 0.5, 1.0);
   glClear (GL_COLOR_BUFFER_BIT);